package com.zhen.gulimall.product.feign;

import com.zhen.common.to.SkuReductionTo;
import com.zhen.common.to.SpuBoundTo;
import com.zhen.common.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

// 远程调用优惠卷服务
@FeignClient("gulimall-coupon")
public interface CouponFeignService {
    /**
     * spring cloud 调用 远程服务接口 过程：
     *  CouponFeignService.saveSpuBounds(@RequestBody SpuBoundTo spuBoundTo)
     *      1）、当controller 层 调用这个方法，这个service 首先将 @RequestBody将这个对象（spuBoundTo）转为 json 数据
     *      2)、通过 @FeignClient("gulimall-coupon") 到注册中心中找到gulimall-coupon服务，
     *          给/coupon/spubounds/save发送请求。将上一步转的json放在请求体位置，携带者数据发送请求，类似前端发送请求;
     *      3)、gulimall-coupon 目标服务收到请求。请求体里有json数据。
     *  总结：
     *      (@RequestBody SpuBoundsEntity spuBounds)﹔将请求体的json转为SpuBoundsEntity
     *      只要json数据模型是兼容的。双方服务无需使用同 —个to（微服务间传输数据 专业名称）
     * @param spuBoundTo
     */
    @PostMapping("/coupon/spubounds/save")
    R saveSpuBounds(@RequestBody SpuBoundTo spuBoundTo);

    @PostMapping("/coupon/skufullreduction/saveinfo")
    R saveSkuReduction(@RequestBody SkuReductionTo skuReductionTo);
}
